package com.test.learnkotlin.extension

/*
    https://juejin.cn/post/7171031370511155231

    用 Kotlin 的扩展函数+泛型+高阶函数 可以打印包含任意数据类型的列表，并将列表内容组织成更具可读性的字符串
 */
fun <T> Collection<T>.print(mapper: (T) -> String) =
    StringBuilder("\n[").also { sb ->
        //遍历集合元素将元素转换成感兴趣的字串，并独占一行
        this.forEach { e -> sb.append("\n\t${mapper(e)},") }
        sb.append("\n]")
    }.toString()


fun <K, V> Map<K, V>.print(mapper: (V?) -> String):String =
    StringBuilder("\n{").also { sb ->
        this.iterator().forEach { entry ->
            sb.append("\n\t[${entry.key}] = ${mapper(entry.value)}")
        }

        sb.append("\n}")
    }.toString()